#ifndef _SCENE_GRAPH
#define _SCENE_GRAPH
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include "../LinAlg/LinAlg.h"
#include "../Culling/frustrumCulling.h"
#include "../Texture/Texture.h"

class Node{
	public:
		virtual void draw(Matrix4 *C, Texture *t) =0;
		bool animateEnabled;
};

class Group: public Node{ 
	public:
		Group();
		void add(Node *n);
		void remove(Node *n);
		void draw(Matrix4 *C, Texture *t) ;
		Node* children[100];	
		int next;
};

class Geode: public Node{ 
	public:
		Geode();
		Vector4 *color;
		Vector3 *centerBS;
		double radiusBS;
		virtual void render() =0;
		virtual void boundingSphere(Matrix4 *c, Texture *t) =0;
		void draw(Matrix4 *C, Texture *t);
};

class MatrixTransform: public Group{
	public:
		Matrix4 *M;
		Matrix4* C_new;
		MatrixTransform();
		MatrixTransform(Matrix4* m);
		virtual void animate() { };
		void draw(Matrix4 *C, Texture *t);
};

#endif
